/****************************************************************
 *
 *  Auto generated
 *
 ****************************************************************/
#include "../File.h"
#include "File.impl.cc"

namespace noria { namespace io { namespace sshfs {

	class File final : public IFile
	{
	public:
		virtual void OpenRead(const char* file, const char* encoding/* = "utf-8"*/) override
		{
			m_impl.OpenRead(file, encoding);
		}
		virtual void OpenWrite(const char* file, const char* encoding/* = "utf-8"*/, bool append/* = false*/) override
		{
			m_impl.OpenWrite(file, encoding, append);
		}
		virtual void Close() override
		{
			m_impl.Close();
		}
		virtual IFile* operator<<(const char* val) override
		{
			m_impl << val;
			return this;
		}
		virtual IFile* operator<<(const wchar_t* val) override
		{
			m_impl << val;
			return this;
		}
		virtual IFile* operator<<(int val) override
		{
			m_impl << val;
			return this;
		}
	public:
		virtual void Dispose() override
		{
			delete this;
		}
		virtual const IType* const GetType() const override
		{
			return GetFileType();
		}
		virtual IReflectable* Invoke(const char* name, IReflectable** args) override
		{
			// TODO:
			return nullptr;
		}
	private:
		FileImpl m_impl;
	private:
		friend const IType* const GetFileType();
		class Type final : public IType
		{
		public:
			virtual void Dispose() override
			{
			}
			virtual IReflectable* CreateInstance() const override
			{
				return new File();
			}
			virtual const char* const GetName() const override
			{
				return "File";
			}
			virtual const char* const GetFullName() const override
			{
				return "noria.io.sshfs.File";
			}
		};
	};

	const IType* const GetFileType()
	{
		static File::Type type;
		return &type;
	}
}}}